package com.zifuchuan.zuoye;

import java.util.Random;
import java.util.Scanner;

/*+
在登录注册页面中，除了用户名和密码外，通常也会包含验证码。
验证码是用来区分用户是计算机还是人，防止恶意破解密码、刷票、灌水等行为。
在判断验证码时一般不区分大小写。请编写程序模拟验证码的判断过程，
如果输入正确，给出提示，结束程序。如果输入错误，给出提示，验证码刷新，重新输入，直至正确为止。

生成4位随机验证码的功能在之前的题目中已经完成，可以直接使用。
《定义方法，获取一个包含4个字符的验证码，每一位字符是随机选择的字母和数字，可包含a-z,A-Z,0-9。》

1、定义方法，实现获取包含4个字符的随机验证码。（参考以前的练习）
2、创建键盘录入Scanner对象。
3、定义while循环，循环条件为true。
4、在循环内，获取程序生成的验证码，提示用户输入，调用Scanner对象的nextLine方法获取用户输入。
5、使用String的equalsIgnoreCase方法比较生成的验证码和用户输入，因为不区分大小写。
5.1、如果相等，给出输入正确的提示，使用break语句跳出循环。
	5.2、如果不相等，给出输入错误的提示，继续下一次循环

 */
public class HomeWork03 {
    public static void main(String[] args) {
        String code = getRandomCode();
        System.out.println(code);
        // 创建键盘录入Scanner对象。
        Scanner s = new Scanner(System.in);

        // 定义while循环，循环条件为true。
        while (true){
      // 在循环内，获取程序生成的验证码，提示用户输入，调用Scanner对象的nextLine方法获取用户输入。
            System.out.println("请输入验证码:");
            String line = s.nextLine();
  // 使用String的equalsIgnoreCase方法比较生成的验证码和用户输入，因为不区分大小写。
            if (line.equalsIgnoreCase(code)){
                // 如果相等，给出输入正确的提示
                // ，使用break语句跳出循环。
                System.out.println("验证码正确");
                break;
                // 如果不相等，给出输入错误的提示，继续下一次循环
            }else{
                System.out.println("请重新输入验证码");
            }
        }


    }
    //  定义方法，实现获取包含4个字符的随机验证码。（参考以前的练习）
    public static String getRandomCode(){
        StringBuilder sb = new StringBuilder();
        for (char ch ='a';ch<='z';ch++){
           sb.append(ch);
        }
        for (char ch ='A';ch<='A';ch++){
            sb.append(ch);
        }
        for (char ch ='0';ch<='9';ch++){
            sb.append(ch);
        }
        Random r = new Random();
        String code = "";
        for (int i = 0; i < 4; i++) {

            int index = r.nextInt(sb.length());
            code += sb.charAt(index);

        }
        return code;
    }

}
